i feel in general it is always mixed when it comes to scripting and making tools ‘except’ when you make plugins or nodes.
cmds does a lot of things in a neat and clear way that is very difficult to do with just openmaya and cmds already takes care of a lot of edgecases so mixing them up is in my opinion the best way to go
for example getting the matrix of an object in maya using OpenMaya would be something like this:
from maya import cmds
from maya.api import OpenMaya
nodeName = "pCube1"
selectrionList = OpenMaya.MGlobal.getSelectionListByName(nodeName)
dagNode = selectrionList.getDagPath(0)
transform = OpenMaya.MFnTransform(dagNode)
transformationMatrix = transform.transformation()
resultMatrix = transformationMatrix.asMatrix()
print(resultMatrix)
while if you do a mix of cmds and openmaya you can get rid of a lot of bloat you dont really need
from maya import cmds
from maya.api import OpenMaya
nodeName = "pCube1"
matrixList = cmds.xform(nodeName, query=1, worldSpace=1, matrix=1)
resultMatrix = OpenMaya.MMatrix(matrixList)
print(resultMatrix)
depending on how you mix the 2 you can even make it more readable and in some cases even faster then just sticking with 1 solution. note that these examples are used as you probably want to convert a matrix to its object as its easier to get positional or rotational data or just do basic matrix math with